package cn.com.self.apis.portal.util;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.collections.MapUtils;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

/**
 * json工具类
 * @author liuxq  
 * @date 2018年8月17日
 */
public class JsonUtil {

	/**
	 * json对象转为字符串
	 * @param obj
	 * @return
	 */
	public static String object2Json(Object obj){
		return JSON.toJSONString(obj);
	}


	public static Object json2Object(String str,Object beanClass){
		return JSON.parseObject(str, beanClass.getClass());
	}

	/**
	 * json字符串转为java对象
	 * @param str
	 * @param beanClass
	 * @return
	 */
	public static <T> T json2Bean(String str,Class<T> beanClass){
		return JSON.parseObject(str, beanClass);
	}
	
	/**
	 * json字符串转为list集合
	 * @param str
	 * @param beanClass
	 * @return
	 */
	public static <T> List<T> json2List(String str,Class<T> beanClass){
		return JSON.parseArray(str, beanClass);
	}
	
	/**
	 * json字符串转为map对象
	 * @param jsonStr
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public static Map<String,Object> json2Map(String jsonStr) {
		Map<String,Object> map = JSON.parseObject(jsonStr, Map.class);
		return map;
	}
	
	/**
	 * map对象转为json字符串
	 * @param map
	 * @return
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static String map2Json(Map map) {
		JSONObject node = new JSONObject();
		Iterator<String> keys = map.keySet().iterator();
		while (keys.hasNext()) {
			String key = (String) keys.next();
			String value = MapUtils.getString(map, key);
			node.put(key, value);
		}
		return node.toJSONString();
	}

	public static void main(String[] args) {
		
	}


}
